package com.bizmerce.rnd.oms.decision.data;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
 * TODO 하위 객체로 중간재, 세트물품, 부속품 등, 소매용 포장용기 등의 클래스로 다형화할 수 있다.
 * @author Gyeseon
 *
 */
public class RawMaterial {
	
	/**
	 * Item번호
	 */
	String partNo;//엑셀에서 r컬럼
	
	/**
	 * 공정레벨
	 */
	int level;//엑셀에서 a컬럼
	
	/**
	 * 구매가격
	 * 재료의 가격은 협정별로 CIF 또는 FOB로 구성된다.
	 */
	double purchasePrice; //엑셀에서 s컬럼
	
	/**
	 * Material Cost
	 */
	double cost;//엑셀에서 u컬럼

	/**
	 * 품목번호(상대국 품목분류번호)
	 */
	HsCode hsCode;//pass
	
	/**
	 * 역내산여부
	 */
	boolean intraItem;//pass
	
	/**
	 * 역내가공여부
	 */
	boolean inwardProcess = true;//pass
	
	/**
	 * 원산지 : 국가코드, 역외산:OFFSHORE
	 */
	
	String countryOfOrigin = "OFFSHORE";//pass
	
	/**
	 * 섬유류는 중량기준: 미소기준에서 사용
	 */
	double weight;//pass
	
	/**
	 * 원재료를 원산지 판정할때의 적용기준
	 */
	String appliedCriterion;//pass
	
	/**
	 * 중량단위
	 */
	String weightUnit;//pass

	/**
	 * 수출용원재료원산지확인서 번호
	 */
	String confirmationNo;//pass
	
	public String getPartNo() {
		return partNo;
	}

	public void setPartNo(String partNo) {
		this.partNo = partNo;
	}

	public double getPurchasePrice() {
		return purchasePrice;
	}

	public void setPurchasePrice(double purchasePrice) {
		this.purchasePrice = purchasePrice;
	}

	public HsCode getHsCode() {
		return hsCode;
	}

	public void setHsCode(HsCode hsCode) {
		this.hsCode = hsCode;
	}

	public boolean isIntraItem() {
		return intraItem;
	}

	public void setIntraItem(boolean intraItem) {
		this.intraItem = intraItem;
	}

	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		this.level = level;
	}

	public double getCost() {
		return cost;
	}

	public void setCost(double cost) {
		this.cost = cost;
	}

	public boolean isNotIntraItem() {
		return !isIntraItem();
	}
	
	public boolean isInwardProcess() {
		return inwardProcess;
	}

	public void setInwardProcess(boolean inwardProcess) {
		this.inwardProcess = inwardProcess;
	}
	
	public String getCountryOfOrigin() {
		return countryOfOrigin;
	}

	public void setCountryOfOrigin(String countryOfOrigin) {
		this.countryOfOrigin = countryOfOrigin;
	}

	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}

	public String getWeightUnit() {
		return weightUnit;
	}

	public void setWeightUnit(String weightUnit) {
		this.weightUnit = weightUnit;
	}

	public String getAppliedCriterion() {
		return appliedCriterion;
	}

	public void setAppliedCriterion(String appliedCriterion) {
		this.appliedCriterion = appliedCriterion;
	}

	public String getConfirmationNo() {
		return confirmationNo;
	}

	public void setConfirmationNo(String confirmationNo) {
		this.confirmationNo = confirmationNo;
	}

	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
	}
	//수출용원산지확인서	
}